Along with the advancement in electronic and computer technologies, more and more functions can be realized. With new add-in peripheral devices, functions can even be upgraded or added. However, after a new peripheral device is connected, the computer system needs to be restarted in order to complete the installing of the peripheral device, which requires stopping of all current operations. In actual implementation, this is very inconvenient, and especially for devices such as servers that demand high reliability and continuity, this may cause adverse effects such as data lost or service interrupted.
Thus, a hot-pluggable slot card technique called PCI (Peripheral Component Interconnection) technique used as an Input/Output (I/O) interface for a computer system has been proposed in the industry. PCI is now a bus standard widely supported by today's computer systems.
PCI is a peripheral connecting interface usually adopted by computer platform that allows the CPU of the computer platform to outwardly extend and connect to a circuit board. Through this circuit board, the CPU can be connected to a variety of computer peripheral device, for example, a display, a hard disk drive, a CD-ROM, a network switch and so on, and exchange data therewith. The PCI specification has set forth a set of standard bus signals for the CPU to communicate with the peripheral devices on the circuit board. With the maturity and further development, the PCI specification has included other extended specification, such as PCI-X and PCI-E (PCI-Express), which has additional functionalities extended from the original PCI architecture, such as allowing higher data transmission speed than that of a PCI bus.
One characteristic of the PCI-E bus architecture is that it supports expansion card with different bus width, including 1-bit (x1), 4-bit (x4), 8-bit (x8) and 16-bit (x16) bus width. In actual implementation, expansion card with smaller bus width can be inserted into one with larger bus width. For example, a 4-bit expansion card not only is able to insert into a 4-bit slot, but also an 8-bit or 16-bit slot. In other words, if a computer motherboard is provided with 8-bit slots, then the slots can be selectively inserted with 8-bit or 4-bit expansion card.
However, in actual implementation, the above-mentioned PCI-E bus architecture has one drawback explained as follows. Assuming a PCI-E interface controller of a computer motherboard is an 8-bit bus, there are two ways for connecting the 8-bit bus. The first is to connect all 8 bits of the bus to an 8-bit slot. The second is to divide the bus into two 4-bit buses, each connected to a different slot. Now if the second approach is adopted, then only a 4-bit bus width can be utilized regardless how many expansion cards are inserted. That is, if only one expansion card is inserted, only a bus width of 4 bits instead of 8 bits is available for data transmission. Obviously, under the circumstance that only one expansion card is inserted, the system resources cannot be efficiently utilized for data transmission.
Moreover, when a slot is arranged on the PCI-E interface controller on a computer motherboard, regardless of whether an expansion card is actually inserted in the PCI-E interface, the computer system will always assign system resources (e.g. IO, MMIO, IRQ) to the bridges of the PCI-E interface, even for those bridges that do not have an expansion card thereon. If the BIOS is forced to not assign any system resources to the bridges of the PCI-E interface without expansion card inserted thereon, then error message may appear on the OS (e.g. MPS mode of MS Windows 2000, 2003®) of the computer device.
Thus, there is a need for a method that enhances data transmission speed while conserving system resources.